<?php

namespace app\api\controller;

use lib\Ekfapi;
use lib\HnnxClient;
use app\JjjController;
class Test extends JjjController
{

    public function index()
    {
        echo '123123';
    }

    public function pay()
    {
        $ekf = new Ekfapi();
        $ret = $ekf->pre_pay([
            'openid' => 'o8yE6vnXPiBq9SuutXVaZfJsgADk',
            'type_source' => 'weixin',
            'money' => '0.01',
            'order_no' => date('Ymd').'3',
            'goods_title' => '测试',
        ]);
        halt($ret);
    }

    public function scanpay()
    {
        $param = $this->request->param();

        $ekf = new Ekfapi();
        $ret = $ekf->trade_pay([
            'code' => $param['code'],
            'total_amount' => '0.01',
            'shop_price' => '1',
            'shop_body' => '测试',
            'out_trade_no' => date('Ymd').'2',
            'equipid' => '002002058',
        ]);
        halt($ret);
    }

    public function refund()
    {
        $param = $this->request->param();

        $ekf = new Ekfapi();
        $ret = $ekf->refund([
            'out_trade_no'=>'202511052',
            'refund_amount'=>'0.01'
        ]);
        halt($ret);
    }
    public function refundQ()
    {
        $ekf = new Ekfapi();
        $ret = $ekf->refundOrderQuery('2025110514565900931881148461');
        halt($ret);
    }

    public function orderQ()
    {
        $ekf = new Ekfapi();
        $ret = $ekf->order_query('2025110553102484');
        halt($ret);
    }

    public function scan()
    {
        $data = $this->getData();
        $data['TransAmt']         = $data['money'];//交易金额(元)
        $data['MerTransDateTime'] = date('Y-m-d H:i:s', time()); //交易时间
        $data['MerSeqNbr']        = $data['order_no'];//订单号
        $data['QrCodeInfo']       = $data['auth_code'];
        $data['OrderTitle']       = '购买商品';
        $data['OperatorId']       = '';
        $data['MerUrl']           = 'https://device.xinyaoan.com/api/index/notify';
        $data['Equipid']          = '872000215';
        $data['TerminalType']     = '11';
        $data['Lgtude']           = '113.637891';
        $data['Lttude']           = '34.759580';
        $data['AppVersion']       = '1.01.000';
        $config = [
            'brandId'=>'1600299999', //交易机构号
            'SubMerchantId'=> 'AA1687231844243', //二级商户号
        ];
        $client           = new HnnxClient($config);
        $res              = $client->coretoall($data);
        halt($res);
    }

    public function test()
    {
//         halt(123);
        //A表结构
        // ly_pid	力洋数据id
        // name	名称
        // initial	首字母
        // logo	LOGO
        // price	厂家指导价
        // parentid	上级ID
        // depth	深度 1品牌 2车系 3车型 4具体车型
        // yeartype	年款
        // listdate	上市年月
        // productionstate	生产状态
        // salestate	销售状态
        // color	车身颜色
        // sizetype	车型尺寸
        // displacement	排量
        // gearbox	变速箱
        // gearnum	挡位个数
        // geartype	变速箱类型
        // environmentalstandards	环保标准
        // iscommercial	是否商用车 0不是 1是 2部分是
        // app_id	应用id
        // engine	发动机
        // chassis_code	底盘号
        //B表结构
        // pid	产品ID
        // manufacturers	厂家
        // brand	品牌
        // serie	车系
        // models	车型
        // salesname	销售名称
        // year	年款
        // emissionstandard	排放标准
        // vehicletype	车辆类型
        // vehiclesize	车辆级别
        // generation	代数
        // chassiscode	底盘号
        // listingyear	上市年份
        // listingmonth	上市月份
        // idlingyear	停产年份
        // productionstatus	生产状态
        // country	国别
        // vehicleattributes	国产合资进口
        // enginemodel	发动机型号
        // cylindervolume	气缸容积
        // displacement	排量(升)
        // induction	进气形式
        // fueltype	燃料类型
        // fuelgrade	燃油标号
        // horsepower	最大马力(ps)
        // powerkw	最大功率(kW)
        // cylinderarrangement	气缸排列形式
        // cylinders	气缸数(个)
        // valvespercylinder	每缸气门数(个)
        // fuelinjection	供油方式
        // transmissiontype	变速器类型
        // transmissiondescription	变速器描述
        // gearnumber	档位数
        // frontbrake	前制动器类型
        // rearbrake	后制动器类型
        // powersteering	助力类型
        // enginelocation	发动机位置
        // drivemodel	驱动形式
        // bodytype	车身型式
        // wheelbase	轴距(mm)
        // doors	车门数
        // seats	座位数(个)
        // fronttyre	前轮胎规格
        // reartyre	后轮胎规格
        // frontrim	前轮毂规格
        // rearrim	后轮毂规格
        // rimsmaterial	轮毂材料
        // sparewheel	备胎规格
        // sunroof	电动天窗
        // panoramicsunroof	全景天窗
        // hidheadlamp	氙气大灯
        // frontfoglamp	前雾灯
        // rearwiper	后雨刷
        // ac	空调
        // autoac	自动空调
        // intelligentstopstart	发动机启停技术
        // dippedlights	近光类型
        // highbeam	远光类型

//        try {
            // 获取B表所有数据
            $tableB = \think\facade\Db::table('jjjshop_liyang_cardata')->where('id','>',1000)->select()->toArray();
//halt($tableB);
            // 存储映射关系，用于建立父子关系
            $brandMap = []; // 品牌ID映射
            $serieMap = []; // 车系ID映射
            $modelMap = []; // 车型ID映射

            // 辅助函数：获取字符串首字母
            $getInitial = function($str) {
                // 简单处理：获取字符串第一个字符并转为大写
                if (empty($str)) {
                    return '';
                }
                $first_char = mb_substr($str, 0, 1, 'utf-8');
                return strtoupper($first_char);
            };

            // 第一步：处理品牌数据（depth=1）
            $processedBrands = [];
            foreach ($tableB as $item) {
                if (!isset($processedBrands[$item['brand']])) {
                    $brandId = \think\facade\Db::table('jjjshop_car')->where([
//                        'ly_pid' => $item['pid'], // 使用B表的pid作为力洋数据id
                        'name' => $item['brand'],
                        // 'initial' => $getInitial($item['brand']), // 获取首字母
                        'parentid' => 0, // 品牌的父级为0
                        'depth' => 1, // 深度为1表示品牌
                        'app_id' => 10001,
                    ])->value('id');
                    if(!$brandId){
// 插入品牌数据到A表
                        $brandId = \think\facade\Db::table('jjjshop_car')->insertGetId([
//                        'ly_pid' => $item['pid'], // 使用B表的pid作为力洋数据id
                            'name' => $item['brand'],
                            // 'initial' => $getInitial($item['brand']), // 获取首字母
                            'parentid' => 0, // 品牌的父级为0
                            'depth' => 1, // 深度为1表示品牌
                            'app_id' => 10001,
                        ]);
                    }


                    $brandMap[$item['brand']] = $brandId; // 记录品牌ID映射
                    $processedBrands[$item['brand']] = true;
                }
            }
//halt(1);
            // 第二步：处理车系数据（depth=2）
            $processedSeries = [];
            foreach ($tableB as $item) {
                if (!empty($item['serie']) && isset($brandMap[$item['brand']]) && !isset($processedSeries[$item['brand'].'_'.$item['serie']])) {
                    $serieId = \think\facade\Db::table('jjjshop_car')->where([
//                        'ly_pid' => $item['pid'],
                        'name' => $item['serie'],
                        // 'initial' => $getInitial($item['serie']),
                        'parentid' => $brandMap[$item['brand']], // 车系的父级为对应的品牌ID
                        'depth' => 2, // 深度为2表示车系
                        'app_id' => 10001,
                    ])->value('id');
                    if(!$serieId){
                        // 插入车系数据到A表
                        $serieId = \think\facade\Db::table('jjjshop_car')->insertGetId([
//                        'ly_pid' => $item['pid'],
                            'name' => $item['serie'],
                            // 'initial' => $getInitial($item['serie']),
                            'parentid' => $brandMap[$item['brand']], // 车系的父级为对应的品牌ID
                            'depth' => 2, // 深度为2表示车系
                            'app_id' => 10001,
                        ]);
                    }


                    $serieMap[$item['brand'].'_'.$item['serie']] = $serieId; // 记录车系ID映射
                    $processedSeries[$item['brand'].'_'.$item['serie']] = true;
                }
            }

            // 第三步：处理车型数据（depth=3）
            $processedModels = [];
            foreach ($tableB as $item) {
                // 修改唯一标识，加入年款信息
                if (!empty($item['models']) && isset($serieMap[$item['brand'].'_'.$item['serie']]) && !isset($processedModels[$item['brand'].'_'.$item['serie'].'_'.$item['models'].'_'.$item['year']])) {
                    // 插入车型数据到A表
                    $modelId = \think\facade\Db::table('jjjshop_car')->where([
//                        'ly_pid' => $item['pid'],
                        'name' => $item['models'].'('.$item['year'].')',
                        // 'initial' => $getInitial($item['models']),
                        'parentid' => $serieMap[$item['brand'].'_'.$item['serie']], // 车型的父级为对应的车系ID
                        'depth' => 3, // 深度为3表示车型
                        'app_id' => 10001,
                    ])->value('id');
                    if(!$modelId){
                        // 插入车型数据到A表
                        $modelId = \think\facade\Db::table('jjjshop_car')->insertGetId([
//                        'ly_pid' => $item['pid'],
                            'name' => $item['models'].'('.$item['year'].')',
                            // 'initial' => $getInitial($item['models']),
                            'parentid' => $serieMap[$item['brand'].'_'.$item['serie']], // 车型的父级为对应的车系ID
                            'depth' => 3, // 深度为3表示车型
                            'app_id' => 10001,
                        ]);
                    }


                    // 修改映射关系的键，加入年款信息
                    $modelMap[$item['brand'].'_'.$item['serie'].'_'.$item['models'].'_'.$item['year']] = $modelId; // 记录车型ID映射
                    $processedModels[$item['brand'].'_'.$item['serie'].'_'.$item['models'].'_'.$item['year']] = true;
                }
            }

            // 第四步：处理具体车型数据（depth=4）
            foreach ($tableB as $item) {
                // 更新唯一标识，加入年款信息
                if (isset($modelMap[$item['brand'].'_'.$item['serie'].'_'.$item['models'].'_'.$item['year']])) {
                    // 构建具体车型的唯一标识，可以是销售名称+年款的组合
                    $specificModelKey = $item['salesname'].'_'.$item['year'];

                    // 映射B表字段到A表字段
                    $specificModelData = [
                        'app_id' => 10001,
                        'ly_pid' => $item['pid'],
                        'name' => $item['salesname'] ?? $item['models'], // 如果没有销售名称，使用车型名称
                        // 'initial' => $getInitial($item['salesname'] ?? $item['models']),
                        'parentid' => $modelMap[$item['brand'].'_'.$item['serie'].'_'.$item['models'].'_'.$item['year']], // 具体车型的父级为对应的车型ID
                        'depth' => 4, // 深度为4表示具体车型
                        'yeartype' => $item['year'], // 年款
                        'listdate' => ($item['listingyear'] ?? '') . '-' . ($item['listingmonth'] ?? ''), // 上市年月
                        'productionstate' => $item['productionstatus'] ?? '', // 生产状态
                        'displacement' => $item['displacement'] ?? '', // 排量
                        'gearbox' => $item['transmissiontype'] ?? '', // 变速箱
                        'gearnum' => $item['gearnumber'] ?? '', // 挡位个数
                        'geartype' => $item['transmissiondescription'] ?? '', // 变速箱类型
                        'environmentalstandards' => $item['emissionstandard'] ?? '', // 环保标准
                        'engine' => $item['enginemodel'] ?? '', // 发动机
                        'chassis_code' => $item['chassiscode'] ?? '', // 底盘号
                        'sizetype' => $item['vehiclesize'] ?? '', // 车型尺寸
                        // 添加所有缺少的字段
                        'manufacturers' => $item['manufacturers'] ?? '', // 厂家
                        'generation' => $item['generation'] ?? '', // 代数
                        'country' => $item['country'] ?? '', // 国别
                        'vehicleattributes' => $item['vehicleattributes'] ?? '', // 国产合资进口
                        'cylindervolume' => $item['cylindervolume'] ?? '', // 气缸容积
                        'induction' => $item['induction'] ?? '', // 进气形式
                        'fueltype' => $item['fueltype'] ?? '', // 燃料类型
                        'fuelgrade' => $item['fuelgrade'] ?? '', // 燃油标号
                        'horsepower' => $item['horsepower'] ?? '', // 最大马力
                        'powerkw' => $item['powerkw'] ?? '', // 最大功率
                        'cylinderarrangement' => $item['cylinderarrangement'] ?? '', // 气缸排列形式
                        'cylinders' => $item['cylinders'] ?? '', // 气缸数
                        'valvespercylinder' => $item['valvespercylinder'] ?? '', // 每缸气门数
                        'fuelinjection' => $item['fuelinjection'] ?? '', // 供油方式
                        'frontbrake' => $item['frontbrake'] ?? '', // 前制动器类型
                        'rearbrake' => $item['rearbrake'] ?? '', // 后制动器类型
                        'powersteering' => $item['powersteering'] ?? '', // 助力类型
                        'enginelocation' => $item['enginelocation'] ?? '', // 发动机位置
                        'drivemodel' => $item['drivemodel'] ?? '', // 驱动形式
                        'bodytype' => $item['bodytype'] ?? '', // 车身型式
                        'wheelbase' => $item['wheelbase'] ?? '', // 轴距
                        'doors' => $item['doors'] ?? '', // 车门数
                        'seats' => $item['seats'] ?? '', // 座位数
                        'fronttyre' => $item['fronttyre'] ?? '', // 前轮胎规格
                        'reartyre' => $item['reartyre'] ?? '', // 后轮胎规格
                        'frontrim' => $item['frontrim'] ?? '', // 前轮毂规格
                        'rearrim' => $item['rearrim'] ?? '', // 后轮毂规格
                        'rimsmaterial' => $item['rimsmaterial'] ?? '', // 轮毂材料
                        'sparewheel' => $item['sparewheel'] ?? '', // 备胎规格
                        'sunroof' => $item['sunroof'] ?? '', // 电动天窗
                        'panoramicsunroof' => $item['panoramicsunroof'] ?? '', // 全景天窗
                        'hidheadlamp' => $item['hidheadlamp'] ?? '', // 氙气大灯
                        'frontfoglamp' => $item['frontfoglamp'] ?? '', // 前雾灯
                        'rearwiper' => $item['rearwiper'] ?? '', // 后雨刷
                        'ac' => $item['ac'] ?? '', // 空调
                        'autoac' => $item['autoac'] ?? '', // 自动空调
                        'intelligentstopstart' => $item['intelligentstopstart'] ?? '', // 发动机启停技术
                        'dippedlights' => $item['dippedlights'] ?? '', // 近光类型
                        'highbeam' => $item['highbeam'] ?? '', // 远光类型
                        'idlingyear' => $item['idlingyear'] ?? '', // 停产年份
                    ];

                    // 插入具体车型数据到A表
                    \think\facade\Db::table('jjjshop_car')->insert($specificModelData);
                }
            }

            return json(['code' => 1, 'msg' => '数据导入成功']);

//        } catch (\Exception $e) {
//            return json(['code' => 0, 'msg' => '数据导入失败：' . $e->getMessage()]);
//        }
    }
     /**
     * 修复数据
     * @return void
     */
    public function xiufushuju()
    {
        $data = \think\facade\Db::table('jjjshop_car')->where('depth',4)->select();
        foreach ($data as $k=>$v){
            if($v['models']){
                $models = explode('(',$v['models']);
                if(isset($models[0])){
                    \think\facade\Db::table('jjjshop_car')->where('id',$v['id'])->update(['models'=>$models[0]]);
                }
            }
            
        }

    }
}